package cn.lg.soar.common.util.trans.handler;

import cn.lg.soar.common.util.trans.model.TranslateContext;

import java.lang.annotation.Annotation;

/**
 * @author luguoxiang
 * @date 2022/8/31
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface ITranslateHandler<T> {

    /**
     * 翻译java值
     * @param javaValue
     * @param annotation 触发的注解
     * @param context 翻译上下文
     * @return 其他值
     */
    Object convertByJava(T javaValue, Annotation annotation, TranslateContext<T> context);

    /**
     * 反翻译为java值
     * @param value 其他值
     * @param annotation 触发的注解
     * @param context 翻译上下文
     * @return javaValue
     */
    T convertToJava(Object value, Annotation annotation, TranslateContext<T> context);

}
